|
HipHop Virtual Machine(ヒップホップ・バーチャル・マシン、HHVM) は、実行時コンパイラ(JIT)方式でPHP: Hypertext Preprocessor(PHP)およびHackといったプログラミング言語を実行する、仮想機械型の処理系である。HHVMで実行する場合、PHPやHackのコードは、JITコンパイルの過程でまず中間言語のHipHopバイトコード (HHBC) に変換され、さらに動的にx64の機械語へとコンパイル・最適化を行った上で実行される〔。これに対し、公式のPHP実装であるZend Engineでは、PHPのコードを中間表現に変換した上で、中間表現をそのまま実行している。 HHVMはFacebook社が開発しており、Github上にあるソースコードはPHP Licenseとのもと公開されている〔〔。 == 概要 == HHVMはFacebook社で使われていた、PHPをC++に変換するタイプの処理系である (HPHPc) の後継として開発された。HPHPcの運用を行う過程で、さらなるパフォーマンス向上が見込めなくなってきたこと、PHPの中でサポートできない機能があったこと、開発やデプロイに関わる時間・資源消費の問題など、各種の問題が発生してきた〔。HPHPcの運用で得られた経験を元に、それら問題点を解決することを目標として、2010年の頭頃にはFacebookとしてPHPのJIT仮想マシンを作ることを決定した。2013年の第1四半期には、facebook.comの実運用がHPHPcからHHVMへ切り替わった。 JITコンパイルの過程として、HHVMではPHPやHackのコードを、HHBCと呼ばれるバイトコード型の中間言語へと変換する。HHBCはHHVMのために設計されたバイトコードであり、後工程でJITコンパイラとインタープリタのどちらも使用できるようになっている。そして、HHBCはバイトコードのレベルで最適化が行われ、x64の機械語にその場で(JIT)コンパイルされ、CPUが直接実行する〔〔。このような実行過程は、.NET Frameworkでの共通言語ランタイムや、Javaの仮想マシンといった、他の言語での仮想マシンとも共通する部分がある。 HHVMでは、公式のPHP 5.4が含む機能を、 create_function() やeval() といった、文字列をコードとして実行する機能までほぼ完全に実装したこと、時間のかかるバイナリビルドが不要となりデプロイが簡単となること、開発用と本番用で同じ処理系が使えること(HPHPcの時代には、開発過程で逐一ビルドするのを避けるため、別途でインタープリタを用意していた)など、HPHPcと比べて多くの利点がある。HHVMの公開に合わせて、「PHPの新たな形態」とも言える、Facebook社が開発したHack言語も同時に動かせるようになっている。Hackは動的型付けと静的型付けをあわせ持つ言語であり、関数の引数や返り値、プロパティに型チェックを加えられる(ローカル変数に対しては不可能)。なお、HackではPHPの一部機能に非対応となっている。 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「HipHop Virtual Machine」の詳細全文を読む スポンサード リンク
|